{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Approximating Wasserstein distances with PyTorch\n",
    "\n",
    "Many problems in machine learning deal with the idea of making two probability distributions to be as close as possible. In the simpler case where we only have observed variables $\\mathbf{x}$ (say, images of cats) coming from an unknown distribution $p(\\mathbf{x})$, we'd like to find a model $q(\\mathbf{x}\\vert\\theta)$ (like a neural network) that is a good approximation of $p(\\mathbf{x})$. It can be shown<a href=\"#fn1\" id=\"fr1\"><sup>1</sup></a> that minimizing $\\text{KL}(p\\Vert q)$ is equivalent to minimizing the negative log-likelihood, which is what we usually do when training a classifier, for example. In the case of the <a href=\"https://dfdazac.github.io/01-vae.html\" target=_blank>Variational Autoencoder</a>, we want the approximate posterior to be close to some prior distribution, which we achieve, again, by minimizing the KL divergence between them.\n",
    "\n",
    "In spite of its wide use, there are some cases where the KL divergence simply can't be applied. Consider the following discrete distributions:\n",
    "\n",
    "![](img/discrete.png)\n",
    "\n",
    "The KL divergence assumes that the two distributions share the same support (that is, they are defined in the same set of points), so we can't calculate it for the example above. This and other computational aspects motivate the search for a better suited method to calculate how different two distributions are.\n",
    "\n",
    "In this post I will\n",
    "\n",
    "- give a brief introduction to the optimal transport problem,\n",
    "- describe the Sinkhorn iterations as an approximation to the solution,\n",
    "- calculate Sinkhorn distances using PyTorch,\n",
    "- describe an extension of the implementation to calculate distances of mini-batches\n",
    "\n",
    "## Moving probability masses\n",
    "\n",
    "Let's think of discrete probability distributions as point masses scattered across the space. We could measure how much effort it would it take to move points of mass from one distribution to the other, as in this example:\n",
    "\n",
    "![](img/assignment.png)\n",
    "\n",
    "We can then define an alternative metric as the total effort used to move all points. We can formalize this intuitive notion by first introducing a *coupling matrix* $\\mathbf{P}$ that represents how much probability mass from one point in the support of $p(x)$ is assigned to a point in the support of $q(x)$. For these uniform distributions we have that each point has a probability mass of $1/4$. If we order the points in the supports of the example from left to right, we can write the coupling matrix for the assignment shown above as:\n",
    "\n",
    "$$\n",
    "\\mathbf{P} =\n",
    "\\begin{pmatrix}\n",
    "0 & 0 & 0 & \\tfrac{1}{4}\\\\\n",
    "0 & 0 & \\tfrac{1}{4} & 0\\\\\n",
    "0 & \\tfrac{1}{4} & 0 & 0\\\\\n",
    "\\tfrac{1}{4} & 0 & 0 & 0\\\\\n",
    "\\end{pmatrix}\n",
    "$$\n",
    "\n",
    "That is, mass in point 1 in the support of $p(x)$ gets assigned to point 4 in the support of $q(x)$, point 2 to point 3, and so on, as shown with the arrows above.\n",
    "\n",
    "In order to know how much effort the assignment takes, we introduce a second matrix, known as the *distance matrix*. Each entry $\\mathbf{C}_{ij}$ in this matrix contains the cost of moving point $i$ in the support of $p(x)$ to point $j$ in the support of $q(x)$. One way to define this cost is to use the Euclidian distance between points, also known as the *ground distance*. If we assume the supports for $p(x)$ and $q(x)$ are $\\lbrace 1,2,3,4\\rbrace$ and $\\lbrace 5,6,7, 8\\rbrace$, respectively, the cost matrix is:\n",
    "\n",
    "$$\n",
    "\\mathbf{C} =\n",
    "\\begin{pmatrix}\n",
    "4 & 5 & 6 & 7 \\\\\n",
    "3 & 4 & 5 & 6 \\\\\n",
    "2 & 3 & 4 & 5 \\\\\n",
    "1 & 2 & 3 & 4\n",
    "\\end{pmatrix}\n",
    "$$\n",
    "\n",
    "With these definitions, the total cost can be calculated as the <a href=\"https://en.wikipedia.org/wiki/Frobenius_inner_product\" target=_blank>Frobenius inner product</a> between $\\mathbf{P}$ and $\\mathbf{C}$:\n",
    "\n",
    "$$\n",
    "\\langle\\mathbf{C},\\mathbf{P} \\rangle = \\sum_{ij}\\mathbf{C}_{ij}\\mathbf{P}_{ij}\n",
    "$$\n",
    "\n",
    "As you might have noticed, there are actually multiple ways to move points from one support to the other, each one yielding different costs. The one above is just one example, but we are interested in the assignment that results in the smaller cost. This is the problem of **optimal transport** between two discrete distributions, and its solution is the lowest cost $\\text{L}_\\mathbf{C}$ *over all possible coupling matrices*. This last condition introduces a constraint in the problem, because not any matrix is a valid coupling matrix. For a coupling matrix, all its columns must add to a vector containing the probability masses for $p(x)$, and all its rows must add to a vector with the probability masses for $q(x)$. In our example, these vectors contain 4 elements, all with a value of $1/4$. More generally, we can let these two vectors be $\\mathbf{a}$ and $\\mathbf{b}$, respectively, so the optimal transport problem can be written as:\n",
    "\n",
    "$$\n",
    "\\begin{align*}\n",
    "&\\text{L}_\\mathbf{C} = \\min_{\\mathbf{P}}\\langle\\mathbf{C},\\mathbf{P}\\rangle \\\\\n",
    "\\text{subject to } &\\mathbf{P}\\mathbf{1} = \\mathbf{a} \\\\\n",
    "&\\mathbf{P}^{\\top}\\mathbf{1} = \\mathbf{b}\n",
    "\\end{align*}\n",
    "$$\n",
    "\n",
    "When the distance matrix is based on a valid <a href=\"https://en.wikipedia.org/wiki/Metric_(mathematics)\">distance function</a>, the minimum cost is known as the **Wasserstein distance**.\n",
    "\n",
    "There is a large body of work regarding the solution of this problem and its extensions to continuous probability distributions. For a more formal and comprehensive account, I recommend checking the book <a href=\"https://arxiv.org/abs/1803.00567\" target=_blank>Computational Optimal Transport</a> by Gabriel Peyré and Marco Cuturi, which is the main source for this post. \n",
    "\n",
    "The bottom line here is that we have framed the problem of finding the distance between two distributions as finding the optimal coupling matrix. It turns out that there is a small modification that allows us to solve this problem in an iterative and differentiable way, that will work well with automatic differentiation libraries for deep learning, like PyTorch and TensorFlow.\n",
    "\n",
    "## Entropic regularization and the Sinkhorn iterations\n",
    "\n",
    "We start by defining the *entropy* of a matrix:\n",
    "\n",
    "$$\n",
    "H(\\mathbf{P}) = -\\sum_{ij}\\mathbf{P}_{ij}\\log\\mathbf{P}_{ij}\n",
    "$$\n",
    "\n",
    "As in the notion of <a href=\"https://en.wikipedia.org/wiki/Entropy_(information_theory)\" target=_blank>entropy of a distribution in information theory</a>, a matrix with a low entropy will be sparser, with most of its non-zero values concentrated in a few points. Conversely, a matrix with high entropy will be smoother, with the maximum entropy achieved with a uniform distribution of values across its elements. With a regularization coefficient $\\varepsilon​$, we can include this in the optimal transport problem to encourage smoother coupling matrices:\n",
    "\n",
    "$$\n",
    "\\begin{align*}\n",
    "&\\text{L}_\\mathbf{C} = \\min_{\\mathbf{P}}\\langle\\mathbf{C},\\mathbf{P}\\rangle -\\varepsilon H(\\mathbf{P})\\\\\n",
    "\\text{subject to } &\\mathbf{P}\\mathbf{1} = \\mathbf{a} \\\\\n",
    "&\\mathbf{P}^{\\top}\\mathbf{1} = \\mathbf{b}\n",
    "\\end{align*}\n",
    "$$\n",
    "\n",
    "By making $\\varepsilon$ higher, the resulting coupling matrix will be smoother, and as $\\varepsilon$ goes to zero it will be sparser, with the solution being close to that of the original optimal transport problem.\n",
    "\n",
    "By introducing this entropic regularization, the optimization problem is made convex and can be solved iteratively using the *Sinkhorn iterations*<a href=\"#fn2\" id=\"fr2\"><sup>2</sup></a>. The solution can be written in the form $\\mathbf{P} = \\text{diag}(\\mathbf{u})\\mathbf{K}\\text{diag}(\\mathbf{v})$, and the iterations alternate between updating $\\mathbf{u}$ and $\\mathbf{v}$:\n",
    "\n",
    "$$\n",
    "\\begin{align*}\n",
    "\\mathbf{u}^{(k+1)} &= \\frac{\\mathbf{a}}{\\mathbf{K}\\mathbf{v}^{(k)}}\\\\\n",
    "\\mathbf{v}^{(k+1)} &= \\frac{\\mathbf{b}}{\\mathbf{K}^{\\top}\\mathbf{u}^{(k+1)}}\n",
    "\\end{align*}\n",
    "$$\n",
    "\n",
    "where $\\mathbf{K}$ is a kernel matrix calculated with $\\mathbf{C}$. Since these iterations are solving a regularized version of the original problem, the corresponding Wasserstein distance that results is sometimes called the Sinkhorn distance. The iterations form a sequence of linear operations, so for deep learning models it is straightforward to *backpropagate* through these iterations.\n",
    "\n",
    "## Sinkhorn iterations with PyTorch\n",
    "\n",
    "There are additional steps that can be added to the Sinkhorn iterations in order to improve its convergence and stability properties. We can find a clean implementation of these by Gabriel Peyrè on <a href=\"https://github.com/gpeyre/SinkhornAutoDiff\" target=_blank>GitHub</a>. Let's test it first with a simple example.\n",
    "\n",
    "For this, we will work now with discrete uniform distributions in 2D space (instead of 1D space as above). In this case we are moving probability masses across a plane. Let's define two simple distributions:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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DjYxe9nGTgf8e++9x/XXX8+ll17KiBEjWLJkCTt37mTEiBEtc77zne8wb948du7cycUXX8wdd9xBbW0t06ZN4/Dhw62On7Ro0SImT/7gBsHp06dz8803M2bMGM4//3xefPHFnPPGjx/PSy+9BMD999/PrFmzAJgyZQqLFi1qmZe9XSj69QMi0uUeXrWNpuOnXq5oOt7Mw6u2deq4P//5zzn33HOpq6tj06ZNTJiQ80a9Ftu2bWPmzJls2LCBs88+myeeeKLN8WPHjrFjxw5qampajlFXV8cFF1zA6tWrWbRoEQ888EDOeQ888AALFixg0aJFrF+/nkcffRSAESNGsGbNmpZ52duFonAXkS6392BTu8ZDjRw5kpdffplvfvOb/PrXv6Zv375tzh80aBBjx44FYMaMGfzmN79pc/zAgQP06/fBjX9NTU0cOHCAuXPnAjB8+HDeeeed0+YBXHXVVbg7jzzyCIsXL265XFNWVkbv3r159913c24XisJdRLrcuf0q2zUe6qKLLmLt2rWMHDmS2bNnM3/+fHr16sX777/fMifzd99kvzHo5HZr45WVlad8/aZNmxgyZAgVFRUArFu3jksvvfS0eQAbN25k3759nHXWWfTp0+eUfUePHm05Rq7tQlC4i0iXu+faoVSWn/qDxsryMu65dminjrt3714+/OEPM2PGDL7xjW+wbt06Pv7xj7N//34aGxs5evQoL7zwQsv8Xbt28dprrwHw7LPP8ulPf7rN8Y997GM0Nze3BHddXR27du3iyJEjvPfee8ydO5evfvWrp83bt28ft956K8899xwf+chHWLVqVUsNjY2NVFVVtfxCsOztQlG4i0iXmzJqIA9OHcnAfpUYMLBfJQ9OHcmUUdlvdm+fjRs3Mnr0aC677DIWLFjA/fffT3l5OXPmzGHMmDHccMMNXHzxxS3zhw0bxjPPPENtbS1vv/02d911V5vjAJ///OdbLtPU1dVx6623Mm7cOD75yU9y1113tVzOOTnv8OHDTJ06le9+97sMGzaMb33rW8ybN6/leK+++ioTJ05sdbtg3L0kH1dccYWLSM+1efPmUpfQLm+99ZZfcsklweMnrVu3zmfMmOHu7p/5zGd869ateee15Qtf+MIpx8jezpSrx0DSAzJWr9xFRNowatQoxo8fT3NzM2+++SZDhuR+833mvNYcO3aM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\n",
      "text/plain": [
       "<Figure size 432x216 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "%matplotlib inline\n",
    "import matplotlib.pyplot as plt\n",
    "import numpy as np\n",
    "np.random.seed(42)\n",
    "\n",
    "n_points = 5\n",
    "a = np.array([[i, 0] for i in range(n_points)])\n",
    "b = np.array([[i, 1] for i in range(n_points)])\n",
    "\n",
    "plt.figure(figsize=(6, 3))\n",
    "plt.scatter(a[:, 0], a[:, 1], label='supp($p(x)$)')\n",
    "plt.scatter(b[:, 0], b[:, 1], label='supp($q(x)$)')\n",
    "plt.legend();"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "We can easily see that the optimal transport corresponds to assigning each point in the support of $p(x)$ to the point right above in the support of $q(x)$. For all points, the distance is 1, and since the distributions are uniform, the mass moved per point is 1/5. Therefore, the Wasserstein distance is $5\\times\\tfrac{1}{5} = 1$. Let's compute this now with the Sinkhorn iterations."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Sinkhorn distance: 1.000\n"
     ]
    }
   ],
   "source": [
    "import torch\n",
    "from layers import SinkhornDistance\n",
    "\n",
    "x = torch.tensor(a, dtype=torch.float)\n",
    "y = torch.tensor(b, dtype=torch.float)\n",
    "\n",
    "sinkhorn = SinkhornDistance(eps=0.1, max_iter=100)\n",
    "dist, P, C = sinkhorn(x, y)\n",
    "print(\"Sinkhorn distance: {:.3f}\".format(dist.item()))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Just as we calculated. Now, it would be very interesting to check the matrices returned by the `sinkhorn()` method: `P`, the calculated coupling matrix, and `C`, the distance matrix. Let's begin with the distance matrix:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.imshow(C)\n",
    "plt.title('Distance matrix')\n",
    "plt.colorbar();"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The entry `C[0, 0]` shows how moving the mass in $(0, 0)$ to the point $(0, 1)$ incurs in  a cost of 1. At the other end of the row, the entry `C[0, 4]` contains the cost for moving the point in $(0, 0)$ to the point in $(4, 1)$. This is the larger cost in the matrix:\n",
    "\n",
    "$$\n",
    "(4 - 0)^2 + (1 - 0)^2 = 17\n",
    "$$\n",
    "\n",
    "since we are using the squared $\\ell^2$-norm for the distance matrix.\n",
    "\n",
    "Let's now take a look at the calculated coupling matrix:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.imshow(P)\n",
    "plt.title('Coupling matrix');"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "This readily shows us how the algorithm effectively found that the optimal coupling is the same one we determined by inspection above.\n",
    "\n",
    "So far we have used a regularization coefficient of 0.1. What happens if we increase it to 1?"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Sinkhorn distance: 1.408\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "sinkhorn = SinkhornDistance(eps=1, max_iter=100)\n",
    "dist, P, C = sinkhorn(x, y)\n",
    "print(\"Sinkhorn distance: {:.3f}\".format(dist.item()))\n",
    "plt.imshow(P);"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "As we discussed, increasing $\\varepsilon$ has the effect of increasing the entropy of the coupling matrix. Here we see how $\\mathbf{P}$ has become smoother, but also that there is a detrimental effect on the calculated distance, and the approximation to the true Wasserstein distance worsens.\n",
    "\n",
    "It's also interesting to visualize the assignments in the space of the supports:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "def show_assignments(a, b, P):    \n",
    "    norm_P = P/P.max()\n",
    "    for i in range(a.shape[0]):\n",
    "        for j in range(b.shape[0]):\n",
    "            plt.arrow(a[i, 0], a[i, 1], b[j, 0]-a[i, 0], b[j, 1]-a[i, 1],\n",
    "                     alpha=norm_P[i,j].item())\n",
    "    plt.title('Assignments')\n",
    "    plt.scatter(a[:, 0], a[:, 1])\n",
    "    plt.scatter(b[:, 0], b[:, 1])\n",
    "    plt.axis('off')\n",
    "\n",
    "show_assignments(a, b, P)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Let's do this for a more interesting distribution: the Moons dataset."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Sinkhorn distance: 1.714\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "from sklearn.datasets import make_moons\n",
    "\n",
    "X, Y = make_moons(n_samples = 30)\n",
    "a = X[Y==0]\n",
    "b = X[Y==1]\n",
    "\n",
    "x = torch.tensor(a, dtype=torch.float)\n",
    "y = torch.tensor(b, dtype=torch.float)\n",
    "\n",
    "sinkhorn = SinkhornDistance(eps=0.1, max_iter=100)\n",
    "dist, P, C = sinkhorn(x, y)\n",
    "print(\"Sinkhorn distance: {:.3f}\".format(dist.item()))\n",
    "show_assignments(a, b, P)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Mini-batch Sinkhorn distances\n",
    "\n",
    "In deep learning, we are usually interested in working with mini-batches to speed up computations. The Sinkhorn iterations can be adapted to this setting by modifying them with the additional batch dimension. After adding this change to the implementation (code <a href=\"https://github.com/dfdazac/wassdistance/blob/master/layers.py\" target=_blank>here</a>), we can compute Sinkhorn distances for multiple distributions in a mini-batch. Let's do it here for another example that is easy to verify.\n",
    "\n",
    "We will compute Sinkhorn distances for 4 pairs of uniform distributions with 5 support points, separated vertically by 1 (as above), 2, 3, and 4 units. This way, the Wasserstein distances between them will be 1, 4, 9 and 16, respectively."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Sinkhorn distances:  tensor([ 1.0001,  4.0001,  9.0001, 16.0001])\n"
     ]
    }
   ],
   "source": [
    "n = 5\n",
    "batch_size = 4\n",
    "a = np.array([[[i, 0] for i in range(n)] for b in range(batch_size)])\n",
    "b = np.array([[[i, b + 1] for i in range(n)] for b in range(batch_size)])\n",
    "\n",
    "# Wrap with torch tensors\n",
    "x = torch.tensor(a, dtype=torch.float)\n",
    "y = torch.tensor(b, dtype=torch.float)\n",
    "\n",
    "sinkhorn = SinkhornDistance(eps=0.1, max_iter=100)\n",
    "dist, P, C = sinkhorn(x, y)\n",
    "print(\"Sinkhorn distances: \", dist)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "It works! Note also that now `P` and `C` are 3D tensors, containing the coupling and distance matrices for each pair of distributions in the mini-batch:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "P.shape = torch.Size([4, 5, 5])\n",
      "C.shape = torch.Size([4, 5, 5])\n"
     ]
    }
   ],
   "source": [
    "print('P.shape = {}'.format(P.shape))\n",
    "print('C.shape = {}'.format(C.shape))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Conclusion\n",
    "\n",
    "The notion of the Wasserstein distance between distributions and its calculation via the Sinkhorn iterations open up many possibilities. The framework not only offers an alternative to distances like the KL divergence, but provides more flexibility during modeling, as we are no longer forced to choose a particular parametric distribution. The iterations can be executed efficiently on GPU and are fully differentiable, making it a good choice for deep learning. These advantages have been exploited in recent works in machine learning, such as autoencoders<sup>3,4</sup> and metric embedding<sup>5,6</sup>, making it promising for further applications in the field.\n",
    "\n",
    "#### Acknowledgments\n",
    "\n",
    "I'd like to thank Thomas Kipf for introducing me to the problem of optimal transport and insightful discussions; and Gabriel Peyrè for making code resources available online."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### References\n",
    "\n",
    "<ol>\n",
    "    <li id=\"fn1\">See C. Bishop, *Pattern Recognition and Machine Learning*, section 1.6.1. <a href=\"#fr1\">↩</a></li>\n",
    "    <li id=\"fn2\">Cuturi, Marco. \"Sinkhorn distances: Lightspeed computation of optimal transport.\" Advances in neural information processing systems, 2013. <a href=\"#fr2\">↩</a></li>\n",
    "    <li>Tolstikhin, Ilya, et al. \"Wasserstein auto-encoders.\" arXiv preprint arXiv:1711.01558, 2017.</li>\n",
    "    <li>Patrini, Giorgio, et al. \"Sinkhorn AutoEncoders.\" arXiv preprint arXiv:1810.01118, 2018.</li>\n",
    "    <li>Courty, Nicolas, Rémi Flamary, and Mélanie Ducoffe. \"Learning wasserstein embeddings.\" arXiv preprint arXiv:1710.07457, 2017.</li>\n",
    "    <li>Charlie Frogner, Farzaneh Mirzazadeh, Justin Solomon. \"Learning Embeddings into Entropic Wasserstein Spaces.\" ICLR (2019).</li>\n",
    "</ol>"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.2"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
